package com.city.java.feedbacks.mapper;

import com.city.java.feedbacks.pojo.entity.Feedbacks;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDateTime;
import java.util.List;

public interface FeedbackMapper {
    /**
     * 插入新反馈
     * @param feedback 反馈对象
     * @return 影响行数
     */
    int insertFeedback(Feedbacks feedback);

    /**
     * 根据反馈ID查询反馈
     * @param feedbackId 反馈ID
     * @return 反馈对象
     */
    Feedbacks selectById(@Param("feedbackId") Long feedbackId);

    /**
     * 根据用户ID查询反馈列表
     * @param userId 用户ID
     * @return 反馈列表
     */
    List<Feedbacks> selectByUserId(@Param("userId") Long userId);

    /**
     * 根据状态查询反馈列表
     * @param status 状态
     * @return 反馈列表
     */
    List<Feedbacks> selectByStatus(@Param("status") Feedbacks.FeedbackStatus status);

    /**
     * 查询所有反馈列表
     * @return 反馈列表
     */
    List<Feedbacks> selectAll();

    /**
     * 根据反馈ID更新反馈信息
     * @param feedback 反馈对象
     * @return 影响行数
     */
    int updateById(Feedbacks feedback);

    /**
     * 根据反馈ID删除反馈
     * @param feedbackId 反馈ID
     * @return 影响行数
     */
    int deleteById(@Param("feedbackId") Long feedbackId);

    List<Feedbacks> select(@Param("username") String username,
                           @Param("status") Feedbacks.FeedbackStatus status,
                           @Param("minDate") LocalDateTime minDate,
                           @Param("maxDate") LocalDateTime maxDate,
                           @Param("pageNum") Integer pageNum,
                           @Param("pageSize") Integer pageSize);
    Long getTotal(@Param("username") String username,
                       @Param("status") Feedbacks.FeedbackStatus status,
                       @Param("minDate") LocalDateTime minDate,
                       @Param("maxDate") LocalDateTime maxDate);
}
